package com.yupi.springbootinit.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 工艺单头表
 */
@TableName(value = "process_sheet")
@Data
public class ProcessSheet implements Serializable {

    @TableId(type = IdType.AUTO)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 工艺单基础号（不含版本后缀，如 GY202511001）
     */
    @TableField("process_sheet_no")
    private String processSheetNo;

    @TableField("source_type")
    private Integer sourceType;

    @TableField("source_id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long sourceId;

    @TableField("source_no")
    private String sourceNo;

    /**
     * 主产品料号（冗余）
     */
    @TableField("product_code")
    private String productCode;

    /**
     * 主产品名称（冗余）
     */
    @TableField("product_name")
    private String productName;

    /**
     * 主产品规格（冗余）
     */
    @TableField("specification")
    private String specification;

    /**
     * 总数量（所有产品数量之和）
     */
    private Integer quantity;

    /**
     * 产品种类数量
     */
    @TableField("product_count")
    private Integer productCount;

    /**
     * 材料牌号（工艺单级别）
     */
    @TableField("material_brand")
    private String materialBrand;

    /**
     * 材料规格（工艺单级别）
     */
    @TableField("material_spec")
    private String materialSpec;

    /**
     * 粉末厂家（工艺单级别）
     */
    @TableField("powder_supplier")
    private String powderSupplier;

    /**
     * 计划版次数量
     */
    @TableField("planned_batch_count")
    private Integer plannedBatchCount;

    @TableField("due_date")
    private LocalDateTime dueDate;

    /**
     * 设备名称（关联device_info表）
     */
    @TableField("device_name")
    private String deviceName;

    /**
     * 生产设备ID
     */@TableField("device_id")

    private Integer deviceId;

    /**
     * 设备编码
     */
    @TableField("device_code")
    private String deviceCode;

    /**
     * 工艺版次（A/B/C...）
     */
    @TableField("process_version")
    private String processVersion;

    /**
     * 客户名称（冗余）
     */
    @TableField("customer_name")
    private String customerName;

    /**
     * 工艺单状态：1-已发布，2-已完成
     */
    @TableField("process_status")
    private Integer processStatus;

    @TableField("technical_requirements")
    private String technicalRequirements;

    @TableField("process_file_ids")
    private String processFileIds;

    @TableField("createdBy")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long createdBy;

    @TableField("createdByName")
    private String createdByName;

    @TableField("department_id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long departmentId;

    @TableField("create_time")
    private LocalDateTime createTime;

    @TableField("update_time")
    private LocalDateTime updateTime;

    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}